昨天初步了解了 Hibernate 的基礎概念,今天來探討 API 使用方法。
在 Hibernate 中,最重要的兩個物件就是 SessionFactory
和 Session
。
Session
。初始化的時候會讀取 hibernate 的 configuration,並提供與資料庫的連線,獲得 Session
物件。openSession()
:打開新的 Session。getCurrentSession()
:獲取當前的 Session。beginTransaction()
:開始一個新的 transaction。save()
:儲存物件到資料庫。update()
:更新物件。get()
, load()
:從資料庫讀取物件。buildSessionFactory()
:建立 SessionFactory
物件。commit()
:提交 transactionrollback()
:回滾 transaction以下是透過 Session 進行 CRUD 操作的基本範例:
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = new User("Meow", "meowmeow@example.com");
session.save(user);
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
User user = session.get(User.class, 1L); // 1L 是 User 的 id
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, 1L);
user.setName("MeowMeow");
session.update(user);
transaction.commit();
session.close();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, 1L);
session.delete(user);
transaction.commit();
session.close();
Hibernate 提供了 HQL (Hibernate Query Language) 和 Criteria API 來進行 SQL 語句查詢:
Session session = sessionFactory.openSession();
Query query = session.createQuery("FROM User WHERE email = :email");
query.setParameter("email", "meow@example.com");
List<User> users = query.list();
session.close();
Session session = sessionFactory.openSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<User> query = builder.createQuery(User.class);
Root<User> root = query.from(User.class);
query.select(root).where(builder.equal(root.get("email"), "meow@example.com"));
List<User> users = session.createQuery(query).getResultList();
session.close();
SessionFactory
是個耗用時間和資源的過程,所以通常只在應用程式啟動時建立一次,並重複使用。close
掉,以釋放資源。